One type of arithmetic operation is a multiplication operation. One way to multiply two numbers is to use Booth encoding. Two numbers can be multiplied by generating partial products based on the Booth encoding. A Wallace Tree, which is a tree-like network of carry-save-adders (CSAs), can be used to add the partial products. The use of a CSA is much faster than adding the partial products linearly. The output of the Wallace tree is a true result that includes a sum word and a carry word. To obtain a final sum, however, the sum word and carry word must be added by a conventional adder with carry propagation, such as a carry-propagate-adder (CPA). A variety of arithmetic operations can use a CSA followed a CPA to add two or more numbers together.
Once the result of the arithmetic operation has been generated, the result may then be rounded. Rounding must be performed in arithmetic and store operations when the format of the destination cannot represent the precise true result. For example, a real number may be rounded if it is stored in a shorter real format, or in an integer format. There are four IEEE rounding modes: round to nearest, round down, round up and chop. Given a true result of the arithmetic operation provided as sum and carry words that cannot be represented in the format of the destination, prior art circuits first calculated the true result in a final format (such as two's complement format) and then rounded the true result to the desired number of bits. However, the prior art circuits employed separate steps to generate the true result in a final format and then to round the result to a desired number of bits. This process was slow. Therefore, there is a need for a faster technique to calculate a true result in a final format and round the result.